#include "compile_run.hpp"
#include <jsoncpp/json/json.h>
#include "../comm/httplib.h"


using namespace ns_compile_and_run; 
using namespace httplib;


void Usage(std::string proc)
{
    std::cerr<<"Usge:" << "\n\t" << proc << "port" << std::endl;
}

int main(int argc, char* argv[])
{
    if(argc != 2)
    {
        Usage(argv[0]);
        return 1;
    }
    Server svr;

    svr.Get("/hello",[](const Request& req, Response& resp) 
    {
        //用来基本测试
        resp.set_content("hello httplib, 你好,httplib!", "text/plain;charset=utf-8");
    });
    //svr.set_base_dir("./wwwroot");
   

    svr.Post("/compile_and_run", [](const Request& req, Response& resp)
    {
        std::string in_json = req.body;
        std::string out_json;
        if(!in_json.empty())
        {
            CompileAndRun::Start(in_json, &out_json);
            resp.set_content(out_json,"application/json;charset=utf-8");
        }
    });

     svr.listen("0.0.0.0", atoi(argv[1]));
    //阻塞在此，后面的代码不会被执行！

    // in_json: {"code": "#include...", "input": "","cpu_limit":1, "mem_limit":10240}
    // out_json: {"status":"0", "reason":"","stdout":"","stderr":"",}
    // 通过http 让client 给我们 上传一个json string
    // std::string in_json;

    // Json::Value in_value;
    // in_value["code"] = R"(#include<iostream>
    // int main(){
    //      std::cout << "你可以看见casmc ascmasc我了" << std::endl;
    //       return 0 ;
    //       })";
    // in_value["input"] = "";
    // in_value["cpu_limit"] = 1;
    // in_value["mem_limit"] = 10240 * 3;

    // Json::FastWriter writer;
    // in_json = writer.write(in_value);

    // std::cout<<in_json << std::endl;
    // // 这个是将来给客户端返回的json串
    // std::string out_json;
    // CompileAndRun::Start(in_json, &out_json);
    // std::cout<<"nmdnmdnmdmsddkasdk十多年绞尽脑汁从 "<< std::endl;
    // std::cout<<out_json<<std::endl;
    return 0;
}